package com.kaizeli.website.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.kaizeli.website.pojo.entity.Payment;
import com.kaizeli.website.pojo.dto.PaymentDTO;
import com.kaizeli.website.response.Result;

import java.math.BigDecimal;
import java.util.List;

/**
 * 回款服务接口
 */
public interface PaymentService extends IService<Payment> {

    /**
     * 根据项目ID查询回款列表
     */
    Result<List<PaymentDTO>> getPaymentsByProjectId(Long projectId);

    /**
     * 根据回款状态查询回款列表
     */
    Result<List<PaymentDTO>> getPaymentsByPaymentStatus(String paymentStatus);

    /**
     * 创建回款记录
     */
    Result<Payment> createPayment(Payment payment);

    /**
     * 更新回款记录
     */
    Result<Payment> updatePayment(Payment payment);

    /**
     * 更新回款状态
     */
    Result<Void> updatePaymentStatus(Long id, String paymentStatus);

    /**
     * 计算项目总回款金额
     */
    Result<BigDecimal> calculateTotalPayment(Long projectId);

    /**
     * 计算项目剩余待回款金额
     */
    Result<BigDecimal> calculateRemainingAmount(Long projectId);

    /**
     * 批量创建回款记录
     */
    Result<Void> batchCreatePayments(List<Payment> payments);

    /**
     * 删除回款记录
     */
    Result<Void> deletePayment(Long id);

    /**
     * 根据ID查询回款记录
     */
    Result<PaymentDTO> getPaymentById(Long id);
}
